package org.lwx.reflect.pojo;

import org.lwx.annotation.target.*;

/**
 * @author lwx
 * @date 2020-09-18 16:19
 * @description
 **/
@TYPE_USE
@SONTYPE
public class User<@TYPE_PARAMETER T> extends Father {
    @FIELD
    private String name;
    @FIELD
    private Integer age;

//    @CONSTRUCTOR
    private User() {
    }

    @CONSTRUCTOR
    private User(@PARAMETER String name, @PARAMETER Integer age) {
        this.name = name;
        this.age = age;
    }

    @METHOD(msg = "publishMethod()")
    public void publicMethod() {
        @LOCAL_VARIABLE
        String s;
        System.out.println("Hello");
    }

    @METHOD(msg = "publishMethod(String)")
    public void publicMethod(String s) {
        System.out.println(s);
    }

    @METHOD(msg = "protectedMethod()")
    protected void protectedMethod() {

    }

    @METHOD(msg = "packageMethod()")
    void packageMethod() {

    }

    @METHOD(msg = "privateMethod()")
    private void privateMethod() {
        System.out.println("Hi");
    }

    @METHOD(msg = "privateMethod(String)")
    private void privateMethod(String s) {
        System.out.println(s);
    }
}
